1
C++ 数组的演进
AI013Lesson 4
00:00

C 风格数组std::array 标志着向 类型安全 以及 泛型编程 在现代 C++ 中的根本性转变。

1. 指针衰减问题

旧式数组(int arr[N])会遭受“指针衰减”问题。当传递给函数时,它们会丢失大小元数据,并转换为原始指针(int*)。这会导致不安全的指针运算和缓冲区溢出。

2. C++11 的现代化

std::array 提供了一个轻量级的、 零开销包装器 用于原始数组。它与标准模板库(STL)集成,同时遵守 五规则

C++11 之前(旧式)T[N]衰减C++11 之后(现代)std::array<T, N>+ std::forward(效率提升)

3. 使用 std::forward 实现完美转发

C++11 引入了 std::forward 以确保 std::array 对象在通过模板包装器时不会产生冗余拷贝。通过利用 引用折叠规则,我们能够保留对象的值类别(左值与右值)。

$$T\&\& + \& \rightarrow T\&$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>